package AgentesConcurso;

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.Timer;

import jade.domain.DFService;
import jade.domain.FIPAException;
import jade.domain.FIPAAgentManagement.DFAgentDescription;
import jade.domain.FIPAAgentManagement.ServiceDescription;
import jade.lang.acl.ACLMessage;

@SuppressWarnings("serial")
public class AgenteLoading extends jade.core.Agent {

	Timer timer;
	int tempo;
	private JFrame frmResultado2;

	public void setup() {

		try {
			// REGISTO DO AGENTE NAS PAGINAS AMARELAS
			DFAgentDescription dfd = new DFAgentDescription();
			dfd.setName( getAID() );
			ServiceDescription sd  = new ServiceDescription();
			sd.setType( "AgenteLoading" );
			sd.setName( getLocalName() );
			dfd.addServices(sd);
			DFService.register(this, dfd );  
		}
		catch (FIPAException fe) { 
			fe.printStackTrace(); 
		}

		Object[] args = getArguments();


		this.tempo = (Integer)args[0] + 5;

		loading();
		tick_tack();

	}


	public void tick_tack() {

		ACLMessage msg = receive();
		boolean isLoading = true;

		while (isLoading) {

			if (msg != null) {
				if ((msg.getContent() != null) && (msg.getContent() == "stop")) { isLoading = false; }
			} else {
				msg = this.blockingReceive(500);
			}

		}

		frmResultado2.setVisible(false);

	}


	public void loading() {

		final JProgressBar progressBar = new JProgressBar(JProgressBar.HORIZONTAL, 0, 25);
		frmResultado2 = new JFrame();
		progressBar.setValue(0);
		ActionListener listener = new ActionListener() {
			int counter = 0 ;
			public void actionPerformed(ActionEvent ae) {
				counter++;
				progressBar.setValue(counter);
				if (counter > (tempo-1)) {

					timer.stop();
					frmResultado2.setVisible(false);


				} 
			}
		};



		timer = new Timer(1000, listener);
		timer.start();	


		frmResultado2.setResizable(false);
		frmResultado2.setTitle("Concurso em Progresso...");
		frmResultado2.setIconImage(Toolkit.getDefaultToolkit().getImage("config/Imagens/Cute_Vehicle.png"));
		frmResultado2.setBounds(1000, 	300, 200, 200);
		frmResultado2.setMinimumSize(new Dimension(300,50));
		frmResultado2.getContentPane().setLayout(null);

		JPanel panel = new JPanel();
		panel.add(progressBar);


		frmResultado2.setContentPane(panel);
		frmResultado2.pack();
		frmResultado2.setVisible(true);
		frmResultado2.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

		frmResultado2.setVisible(true);
	}


}
